#pragma once


//-----------------------------------------------------------------------------
struct SDateTime
{
	uint8		seconds;
	uint8		minutes;
	uint8		hours;
	uint8		day;
	uint8		month;
	uint16	year;
};

enum ETimeType
{
	eTime_Instant,
	eTime_Game,
	eTime_FrameStart
};

enum EFPSType
{
	eFPS_Instant,
	eFPS_Max,
	eFPS_Min
};

//-----------------------------------------------------------------------------
//																	ITimer
//-----------------------------------------------------------------------------
struct ITimer
{
	virtual ~ITimer() {}

	virtual void Update() = 0;

	virtual float	GetTime(ETimeType time_type) const = 0;
	virtual float GetFrameTime() const = 0;
	virtual float	GetFPS(EFPSType fps_type) const = 0;
	virtual void	SetTimeScale(float scale) = 0;

	virtual SDateTime	GetDateTime() const = 0;
};